Database applications are applications with which a user interacts to insert and retrieve data from a database. The database applications perform database operations by submitting commands to a database server that has access to the desired database. The database server executes the commands received from database applications by interacting with the database and returning any requested data to the database applications.
Like all software programs, database applications are constantly undergoing improvements and revisions. For a user to be able to use a new version of a database application, a database application developer must deliver the new version of the application to the user, and the user must install the new version of the database application on the user's computer systems.
Software installation is an error-prone process, and can become even more complicated if the installation must be performed on multiple platforms. Even when the installation goes smoothly, the upgrade process may expend a significant amount of time and effort of both the database application developer and the end-user of the database application. If problems are encountered during the delivery or installation, the amount of time and energy required by the upgrade may increase exponentially.
Recently, database applications have been developed which operate as "plug-ins" to web-browsers. As will be discussed in greater detail hereafter, web-browsers are programs which request and decode information sent from servers that participate in the World Wide Web. Plug-ins consist of platform-specific code that is dynamically linked into a web browser to extend the capabilities of a web browser. Similar to other forms of database applications, database applications implemented as plug-ins must be delivered to and installed at each client computer.
As database applications become more sophisticated, they tend to become larger. Consequently, they require user computer systems to have more persistent storage for storing the applications, and more dynamic storage for executing the applications. Thus, the conventional upgrade process for database applications is at odds with the trend toward smaller, less expensive computer systems. For example, network computers, which generally have no persistent storage and relatively little dynamic storage, would not be capable of using the most sophisticated conventional database applications.
One way to avoid the installation process associated with upgrading a database application, and to reduce the resources consumed thereby, is to develop the database application using the X-Windows system. With X-Windows, software packages are installed onto a server to which clients are connected through a network. The server is responsible for both application processing, and for refreshing the screen area of the client computers when the screen area needs to be repainted. Unfortunately, the fact that X-Windows systems execute all code on the server results in significant disadvantages. For example, X-Windows systems tend to generate a significant amount of traffic over the network because even the code that generates the screen displays is executed at the server. Further, any processing capabilities of the client machines go unused, and are therefore wasted.
To both take advantage of the processing capabilities of the client computers and avoid some of the problems associated with delivering database application code to each client, a file-sharing approach may be used. In a file-sharing based system, the database application code exists on a file server, and the database application is installed on each client computer by delivering the database application code from the file server to the client over the network. Because the applications are installed locally on each client, the applications take advantage of the client's computational power during execution. However, the applications installed over a network tend to consume the client's resources while running in the same manner as they would if manually installed at each client computer. In addition, upgrades still require a separate per-client installation process.
Based on the foregoing, it is clearly desirable to provide a mechanism that allows users to execute sophisticated database applications that do not consume large amounts of client-side resources. It is further desirable to provide a mechanism which allows users to use upgraded versions of a database application without incurring the hassle associated with installing the new versions on the client's computer systems. It is further desirable to provide a mechanism that allows database application developers to distribute upgraded versions of application programs without incurring the expense of conventional delivery mechanisms.
It is also desirable to provide a technique that allows relatively low-resource computers, such as network computers, to use sophisticated database applications. It is further desirable to provide techniques that allow existing applications to be executed in a web environment without having to rewrite the code for the applications.